package partTwo;
/* 本类用于汽车设计综合案例*/
public class TestCar2 {
    public static void main(String[] args) {
        //9.创建一个纯纯的对象
        Car c = new Car();
        System.out.println(c.getColor()); //null 被封装了需要使用get方法
        c.start(); //我的车车启动了   使用的父类自己的功能
        c.stop();  //我的车车熄火了   使用的父类自己的功能
        //c.swim();  会报错，父类不能使用子类的特有功能

        BMW b = new BMW();
        System.out.println(b.color); //子类自己的值
        System.out.println(b.getColor());  //父类设置的值
        b.start(); //重写后的功能
        b.stop();  //没有重写，输出的为继承父类的功能

        //11.创建多态对象进行测试
        Car c2 = new TSL();
        // System.out.println(c2.color); 父类被封装的color属性，只能在本类使用
        System.out.println(c2.getColor()); //可以调用公共get方法使用
        c2.stop(); //调用的是重写后的属性
        c2.start();  //没有重写，调用的是父类的声明
        //c2.swim();  会报错，多态对象不能使用子类的特有功能，因为它认为自己是父类型
    }
}
//1.通过分析，抽象形成一个汽车类
class Car {
    //2.定义属性--成员变量
    //2.1 封装属性--使用private
    private String brand;  //品牌
    private String color;  //颜色
    private int id;  //编号
    private double length;  //车长

    //3.定义方法--功能
    public void start(){
        System.out.println("我的车车启动了");
    }
    public void stop(){
        System.out.println("唉呀妈呀，熄火了");
    }

    //2.2 生成属性对应get，set值
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }
}

//4.创建一个子类--宝马类
class BMW extends Car{
    //8.1 定义自己的特有属性
    String color = "五彩斑斓的黑";
    //6.重写父类的方法
    @Override
    public void start(){
        // System.out.println(getColor());  被封装的，使用的话，要调用getcolor
        System.out.println("我的车要起飞了");
    }
}
//5创建一个子类--特斯拉
class TSL extends Car{
    //8.2 定义自己的特有属性
    String color = "炫彩夺目的红";
    @Override
    public void stop(){
        System.out.println("唉呀妈呀，咋停不下来呢");
    }
    //7.定义子类的特有功能
    public void swim(){
        System.out.println("没想到吗，我还是一个潜水艇");
    }
}